# 统一返回数据格式处理
from rest_framework.renderers import JSONRenderer

class CustomRender(JSONRenderer):
    # 重构render方法
    def render(self, data, accepted_media_type=None, renderer_context=None):
        if renderer_context:
            """
            如果返回的data为字典,弹出的CODE与数据库中的CODE字段冲突，直接使用响应状态码
            # 如果返回的data为字典
            # if isinstance(data, dict):
                # 响应信息中有message和code这两个key，则获取响应信息中的message和code，并且将原本data中的这两个key删除，放在自定义响应信息里
                # 响应信息中没有则将msg内容改为请求成功 code改为请求的状态码
                # msg = data.pop('message', 'success')
                # code = data.pop('coded', renderer_context["response"].status_code)
            # 如果不是字典则将msg内容改为请求成功 code改为响应的状态码
            # else:
            #     msg = 'success'
            #     code = renderer_context["response"].status_code
            """
            code = renderer_context["response"].status_code
            if str(code).startswith("2"):
                msg = 'SUCCESS'
            else:
                msg = 'FAILED'
            # 自定义返回的格式
            ret = {
                'message': msg,
                'code': code,
                'data': data,
            }
            # 数据为列表返回总数
            if isinstance(data, list):
                ret['total'] = len(data)
            # 返回JSON数据
            return super().render(ret, accepted_media_type, renderer_context)
        else:
            return super().render(data, accepted_media_type, renderer_context)
